/*
 * Copyright (c) 2025 Industrial Software Feature Database
 */
package com.comac.ins.isfd.service;

import com.anwen.mongo.service.IService;
import com.comac.ins.common.core.domain.model.LoginUser;
import com.comac.ins.common.mybatis.core.page.TableDataInfo;
import com.comac.ins.isfd.domain.IsfdMeshOp2CompareElement;
import com.comac.ins.isfd.domain.IsfdMeshOp2CompareResult;
import com.comac.ins.isfd.domain.IsfdMeshOp2CompareTask;
import com.comac.ins.isfd.domain.bo.IsfdMeshOp2CompareItemBo;
import com.comac.ins.isfd.domain.bo.IsfdMeshOp2CompareQueryBo;
import com.comac.ins.isfd.domain.bo.IsfdMeshOp2CompareTaskBo;
import com.comac.ins.isfd.domain.chunks.TaskUploadResultVo;
import com.comac.ins.isfd.domain.vo.IsfdMeshOp2CompareItemDefaultVo;
import com.comac.ins.isfd.domain.vo.IsfdMeshOp2CompareItemVo;
import com.comac.ins.isfd.domain.vo.IsfdMeshOp2CompareTaskVo;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;
import java.util.Map;

/**
 * 自然网格结果对比任务service
 *
 * @author lj
 * @date 2025-01-15
 */
public interface IIsfdMeshOP2CompareService extends IService<IsfdMeshOp2CompareTask> {

    /**
     * 下载节点清单模板
     */
    void getExcelTemplate(String id, HttpServletResponse response);

    void getExcelSample(String id, HttpServletResponse response);

    /**
     * 读取节点清单
     */
    Map<String, List<IsfdMeshOp2CompareElement>> getElementMapList(String filePath);

    /**
     * 创建对比任务
     */
    IsfdMeshOp2CompareTaskVo createOP2CompareTask(IsfdMeshOp2CompareTaskBo taskBo, LoginUser loginUser);

    /**
     * 保存对比结果
     */
    void saveCompareResult(IsfdMeshOp2CompareTask task, String taskIdStr);

    /**
     * 结果分析任务列表
     */
    TableDataInfo<IsfdMeshOp2CompareTaskVo> queryPageList(IsfdMeshOp2CompareQueryBo queryBo);

    /**
     * 结果分析详情
     */
    IsfdMeshOp2CompareTaskVo queryResultDetail(String id);

    /**
     * 查看分析结果报告
     */
    IsfdMeshOp2CompareResult getCompareReport(String id);

    /**
     * 删除任务及结果
     */
    Boolean deleteTask(String id);

    /**
     * 新增模型对比条目
     *
     * @return boolean 新增是否成功
     */
    Boolean addCompareItem(List<IsfdMeshOp2CompareItemBo> compareItemBoList);

    /**
     * 查询模型对比条目列表
     */
    List<IsfdMeshOp2CompareItemVo> getCompareItemList();

    /**
     * 查询模型对比条目树形结构
     */
    List<IsfdMeshOp2CompareItemVo> getCompareItemTree();

    /**
     * 单元/节点清单上传
     */
    TaskUploadResultVo upload(MultipartFile file, String taskId);


    /**
     * 查询模型对比默认条目列表
     */
    List<IsfdMeshOp2CompareItemDefaultVo> listDefaultCompareItems();
}
